#ifndef _DOT_SORT_GAME_HPP_
#define _DOT_SORT_GAME_HPP_

#include <SFML/System/Clock.hpp>

#include <SFML/Graphics/RenderWindow.hpp>

#include <string>
#include <optional>

#include <SFML/Graphics.hpp>

#include <DotSort/IScene.hpp>

class Game
{
	private:
		inline static Game* instance = nullptr;

		const std::string name = "Dot Sort";

		sf::RenderWindow* window;
		sf::Clock clock;

		void update();
		void processEvents();
		void draw();

		Game();

		IScene* currScene = nullptr;
		IScene* nextScene = nullptr;

		void switchScene();

	public:
		static Game* getInstance();
		~Game();

		void run();

		bool quit = false;

		void changeScene(IScene* scene);
};

#endif
